// 支付配置和管理模块
class PaymentManager {
    constructor() {
        this.storageKey = 'payment_config';
        this.config = this.loadConfig();
    }

    // 从本地存储加载支付配置
    loadConfig() {
        try {
            const config = localStorage.getItem(this.storageKey);
            return config ? JSON.parse(config) : this.getDefaultConfig();
        } catch (error) {
            console.error('加载支付配置失败:', error);
            return this.getDefaultConfig();
        }
    }

    // 默认配置
    getDefaultConfig() {
        return {
            // 微信支付配置
            wechat: {
                enabled: false,
                image: '', // 微信个人收款码图片URL
                link: ''   // 微信个人收款码链接
            },
            // 支付宝支付配置
            alipay: {
                enabled: false,
                image: '', // 支付宝个人收款码图片URL
                link: ''   // 支付宝个人收款码链接
            },
            // 默认支付方式
            defaultPaymentMethod: 'wechat'
        };
    }

    // 保存支付配置到本地存储
    saveConfig() {
        try {
            localStorage.setItem(this.storageKey, JSON.stringify(this.config));
            return true;
        } catch (error) {
            console.error('保存支付配置失败:', error);
            return false;
        }
    }

    // 保存完整的支付配置对象
    savePaymentConfig(config) {
        try {
            this.config = {
                ...this.getDefaultConfig(),
                ...config
            };
            return this.saveConfig();
        } catch (error) {
            console.error('保存支付配置失败:', error);
            return false;
        }
    }

    // 获取支付配置
    getPaymentConfig() {
        return this.config;
    }

    // 生成带金额的收款链接
    generatePaymentLink(platform, amount) {
        if (platform === 'wechat') {
            // 微信个人收款码格式：wxp://f2f...?amount=10.00
            if (this.config.wechat.link) {
                // 检查链接是否已经包含金额参数
                if (this.config.wechat.link.includes('amount=')) {
                    // 如果已包含金额参数，替换为新的金额
                    return this.config.wechat.link.replace(/amount=[^&]*/, 'amount=' + amount);
                } else if (this.config.wechat.link.includes('?')) {
                    // 如果包含其他参数，追加金额参数
                    return this.config.wechat.link + '&amount=' + amount;
                } else {
                    // 如果不包含任何参数，添加金额参数
                    return this.config.wechat.link + '?amount=' + amount;
                }
            } else {
                // 如果未上传微信收款码，生成默认的二维码信息
                return `wechat:${amount}`;
            }
        } else if (platform === 'alipay') {
            // 支付宝个人收款码格式：https://qr.alipay.com/...?money=10.00
            if (this.config.alipay.link) {
                // 检查链接是否已经包含金额参数
                if (this.config.alipay.link.includes('money=')) {
                    // 如果已包含金额参数，替换为新的金额
                    return this.config.alipay.link.replace(/money=[^&]*/, 'money=' + amount);
                } else if (this.config.alipay.link.includes('?')) {
                    // 如果包含其他参数，追加金额参数
                    return this.config.alipay.link + '&money=' + amount;
                } else {
                    // 如果不包含任何参数，添加金额参数
                    return this.config.alipay.link + '?money=' + amount;
                }
            } else {
                // 如果未上传支付宝收款码，生成默认的二维码信息
                return `alipay:${amount}`;
            }
        }
        return null;
    }

    // 验证支付配置是否完整
    isPaymentConfigComplete(platform) {
        if (platform === 'wechat') {
            return this.config.wechat.enabled && (this.config.wechat.image || this.config.wechat.link);
        } else if (platform === 'alipay') {
            return this.config.alipay.enabled && (this.config.alipay.image || this.config.alipay.link);
        }
        return false;
    }

    // 获取可用的支付方式
    getAvailablePaymentMethods() {
        const methods = [];
        if (this.isPaymentConfigComplete('wechat')) {
            methods.push('wechat');
        }
        if (this.isPaymentConfigComplete('alipay')) {
            methods.push('alipay');
        }
        return methods;
    }

    generatePaymentQRCode(platform, amount) {
        const paymentLink = this.generatePaymentLink(platform, amount);
        if (!paymentLink) {
            console.warn(`无法生成${platform === 'wechat' ? '微信' : '支付宝'}支付链接`);
            return null;
        }

        // 使用ZXing-js库生成二维码
        const qrCodeContainer = document.getElementById('qr-code-container');
        
        // 检查ZXing库是否存在（适配UMD版本）
        const zxingInstance = typeof window !== 'undefined' && typeof window.ZXing !== 'undefined' ? window.ZXing : ZXing;
        
        if (qrCodeContainer && ((typeof ZXing !== 'undefined' && typeof ZXing.BrowserQRCodeSvgWriter !== 'undefined') ||
                               (typeof window !== 'undefined' && typeof window.ZXing !== 'undefined' && typeof window.ZXing.BrowserQRCodeSvgWriter !== 'undefined'))) {
            qrCodeContainer.innerHTML = ''; // 清空之前的二维码
            
            try {
                // 创建ZXing二维码生成器
                const writerClass = typeof window !== 'undefined' && typeof window.ZXing !== 'undefined' && typeof window.ZXing.BrowserQRCodeSvgWriter !== 'undefined' ? window.ZXing.BrowserQRCodeSvgWriter : ZXing.BrowserQRCodeSvgWriter;
                const writer = new writerClass();
                
                // 生成SVG格式的二维码并添加到容器
                const svgElement = writer.write(paymentLink, 300, 300);
                qrCodeContainer.appendChild(svgElement);
            } catch (error) {
                console.error('使用ZXing生成二维码时出错:', error);
                return false;
            }
        } else {
            console.error('ZXing库未正确加载或容器元素不存在');
            return false;
        }
        return true;
    }
}

// 创建PaymentManager实例并暴露到全局window对象
if (typeof window !== 'undefined') {
    window.paymentManager = new PaymentManager();
}